package gdut.edu.demo02;

/**
 * @Description 双向循环链表
 * @Author JiaFu
 * @Date 2022/9/5 22:06
 */
public class MyDoubleLoopNode {
    //上一个节点
    private MyDoubleLoopNode pre = this;
    //下一个节点
    private MyDoubleLoopNode next = this;
    //数据
    private Integer data;

    public MyDoubleLoopNode() {
    }

    public MyDoubleLoopNode(Integer data) {
        this.data = data;
    }

    //在当前节点新增下一个节点
    public void insert(MyDoubleLoopNode node) {
        //指针指向当前节点的下一个节点
        MyDoubleLoopNode nextNext = this.next;
        //待插入节点指向当前节点的下一个节点
        node.next = nextNext;
        //当前节点的下一个节点的上一个节点指向待插入节点
        nextNext.pre = node;
        //当前节点的next指向待插入节点node
        this.next = node;
        //待插入节点node的上一个节点指向当前节点
        node.pre = this;
    }

    //获取当前节点data
    public Integer getData(){
        return this.data;
    }

    //获取下一个节点
    public MyDoubleLoopNode next(){
        return this.next;
    }

    //获取上一个节点
    public MyDoubleLoopNode pre(){
        return this.pre;
    }
}

